#ifndef PARAFLUIDEMITTER_H
#define PARAFLUIDEMITTER_H

#include "parafluidbox.h"
#include "parafluidsph.h"
#include "parafluidsubstance.h"

namespace ParaFluid
{
	
	/**
	* Atom Emitter
	*/
	class Emitter
	{
		
	public:
		
		/**
		* Destructor
		*/
		~Emitter();
		
		/**
		* Default Constructor
		*/
		Emitter();
		
		/**
		* Getter for Rate at which Atoms are emitted
		*/
		int rate() const;
		
		/**
		* Setter for Rate at which Atoms are emitted
		*/
		void setRate(int value);
		
		/**
		* Return the remaining number of Atoms to emmit
		*/
		int remaining() const;
		
		/**
		* Setter for the remaining number of Atoms to emmit
		*/
		void setRemaining(int value);
		
		/**
		* Emit some Atoms
		*/
		void emitAtoms(SPH & sph);
		
		/**
		* Emmition Zone
		*/
		Box zone;
		
		/**
		* Substance
		*/
		Substance substance;
		
	private:
		
		/**
		* Rate at which Atoms are emitted
		*/
		int _rate;
		
		/**
		* Remaining
		*/
		int _remaining;
		
		/**
		* Copy Constructor
		*/
		Emitter(const Emitter & other);
		
		/**
		* Assignment Operator
		*/
		Emitter & operator= (const Emitter & rhs);
		
	};	
	
}

#endif
